package com.grp6.game.player;

import java.util.List;

import com.grp6.game.gameactions.IMove;
import com.grp6.game.model.IPiece;

/**
 * Contains the methods to read and set the properties of a player.
 * A player could be a Computer or a Human
 * @author Group6
 */
public interface IPlayer {
	
	/**
	 * Returns the next move of the player
	 * @return Move object
	 */
	IMove getNextMove();

	/**
	 * Indicates whether the player has won the game
	 * @return flag indicating if the player has won 
	 * the game or not
	 */
	boolean isHasWon();

	/**
	 * Sets the value of the flag to indicate that the player has won the game
	 * @param flag to indicate that the player has won the game
	 */
	void setHasWon(boolean hasWon);

	/**
	 * Returns the List of Piece objects that represent the player
	 * @return List of Piece objects
	 */
	List<IPiece> getPieces();

	/**
	 * Sets the pieces to the Player object
	 * @param List of Pieces
	 */
	void setPieces(List<IPiece> pieces);
}
